package class06;

import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;

public class Code01_BFS {

	public static void bfs(Node node) {
		if (node == null) {
			return;
		}
		Queue<Node> queue = new LinkedList<>();
		HashSet<Node> set = new HashSet<>(); // 保证点不要重复进队列 -------> 也可以使用数组 visited[i]
		queue.add(node);
		set.add(node);
		while (!queue.isEmpty()) {
			Node cur = queue.poll();

			System.out.println(cur.value); // 实际中，打印行为是处理行为

			for (Node next : cur.nexts) {
				if (!set.contains(next)) {
					set.add(next);
					queue.add(next);
				}
			}
		}
	}

}

// 实际中的改进，一般实际中 点 都是有限的，因此可以用数组来代替哈希结构，寻址更快